<template>
  <div class=""></div>
</template>

<script setup lang="ts">
  import { ref, unref, reactive, onMounted } from 'vue'

  // ============================ 测试生成器函数 ============================
  // 生成器函数是一个带星号函数，而且是可以暂停执行和恢复执行的。
  // 如果遇到 yield 关键字，那么 JavaScript 引擎将返回关键字后面的内容给外部，并暂停该函数的执行。
  // 外部函数可以通过 next 方法恢复函数的执行。

  //   你会发现函数 genDemo 并不是一次执行完的，全局代码和 genDemo 函数交替执行。其实这就是生成器函数的特性，可以暂停执行，也可以恢复执行。
  function* genDemo() {
    console.log('开始执行第一段')
    yield 'generator 2'

    console.log('开始执行第二段')
    yield 'generator 2'

    console.log('开始执行第三段')
    yield 'generator 2'

    console.log('执行结束')
    return 'generator 2'
  }

  console.log('main 0')
  let gen = genDemo()
  console.log(gen.next().value)
  console.log('main 1')
  console.log(gen.next().value)
  console.log('main 2')
  console.log(gen.next().value)
  console.log('main 3')
  console.log(gen.next().value)
  console.log('main 4')
</script>

<style lang="less" scoped></style>
